﻿using System;
using System.Windows.Forms;
using MediaLibraryManagement.BLL;
using MediaLibraryManagement.Common;
using MediaLibraryManagement.Entity;

namespace MediaLibraryManagement.UI
{
    public partial class UserDetails : Form
    {
        private User _user;

        public UserDetails()
        {
            InitializeComponent();
        }

        private void UserDetails_Load(object sender, EventArgs e)
        {
            _user = GlobalObjects.CurrentUser;
            if (_user != null)
            {
                this.Text = "Thông tin người dùng";
                txtUserName.ReadOnly = true;
                txtUserName.Text = _user.UserName;
                txtFirstName.Text = _user.FirstName;
                txtLastName.Text = _user.LastName;
                if (_user.Gender == Gender.Male)
                {
                    rbtnMale.Checked = true;
                }
                else if (_user.Gender == Gender.Female)
                {
                    rbtnFemale.Checked = true;
                }
                dtpDOB.Value = _user.DateOfBirth.HasValue ? _user.DateOfBirth.Value : DateTime.Today;
                txtEmail.Text = _user.Email;
                txtAddress.Text = _user.Address;
                cboSecurityQuestion.Text = _user.SecurityQuestion;
                txtSecurityAnswer.Text = _user.SecurityAnswer;
            }
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(txtUserName.Text))
                {
                    MessageBox.Show("Tên đăng nhập không được trống.");
                    txtUserName.Focus();
                }
                else if (string.IsNullOrWhiteSpace(txtPassword.Text))
                {
                    MessageBox.Show("Mật khẩu không được trống.");
                    txtPassword.Focus();
                }
                else if (txtPassword.Text.Equals(txtConfirmPassword.Text))
                {
                    UserBLL userBLL = new UserBLL();
                    User user = new User();
                    user.UserName = txtUserName.Text;
                    user.Password = txtPassword.Text;
                    user.FirstName = txtFirstName.Text;
                    user.LastName = txtLastName.Text;
                    if (rbtnMale.Checked)
                    {
                        user.Gender = Gender.Male;
                    }
                    else
                    {
                        user.Gender = Gender.Female;
                    }
                    user.DateOfBirth = dtpDOB.Value;
                    user.Email = txtEmail.Text;
                    user.Address = txtAddress.Text;
                    user.SecurityQuestion = cboSecurityQuestion.Text;
                    user.SecurityAnswer = txtSecurityAnswer.Text;
                    user.Privilege = Privileges.Viewer;
                    user.JoinedDate = DateTime.Today;
                    user.IsActive = true;

                    if (_user == null)
                    {
                        User existingUser = userBLL.GetUserByUserName(txtUserName.Text);
                        if ((existingUser.ID == 0))
                        {
                            userBLL.Insert(user);
                            MessageBox.Show("Đăng ký thành công.", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            MessageBox.Show("Tên người dùng đã tồn tại.", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    else
                    {
                        user.ID = _user.ID;
                        userBLL.Update(user);
                        MessageBox.Show("Cập nhật thành công.", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Mật khẩu không khớp. Nhập lại mật khẩu", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                string message = "Có lỗi xảy ra:\n" + ex;
                MessageBox.Show(message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            if (_user == null)
            {
                txtUserName.Clear();
            }
            txtPassword.Clear();
            txtConfirmPassword.Clear();
            txtFirstName.Clear();
            txtLastName.Clear();
            rbtnMale.Checked = true;
            rbtnFemale.Checked = false;
            dtpDOB.ResetText();
            txtEmail.Clear();
            cboSecurityQuestion.ResetText();
            txtAddress.Clear();
            txtSecurityAnswer.Clear();
        }
    }
}